Rendering systems take as input a description of what is required to be displayed on an output device or in a frame buffer. Typically such a description will often include sets of edge or vector data which describe the outline, or parts of, a basic graphical object. For example, a font glyph could be described as such. Additionally, the description may include fill information that informs the rendering system how to select colours for output pixels in the output device or frame buffer. This fill information will generally be associated with one or more sets of edge or vector data. For example, a red colour could be associated with a set of edge or vector data to generate a red font glyph. The process of taking an input set of vector or edge based graphic data and generating pixel values as output is known in the art as scan-conversion.
One method of scan-conversion involves sorting the edges of each graphical object into buckets, based on the minimum y-coordinate of each edge. The output image is then generated one scan-line at a time using the corresponding bucket of edges. During this process, an active edge list is maintained containing those edges that continue down the image into a following scan-line. This process can be computationally expensive—particularly since sorting of the active edge list cannot be readily implemented as part of a pipelined process.
To save memory, prior art rendering systems will allow input graphical objects to be provided as input along with transformation matrices. This allows a single definition of an object in memory to be used to form part of the output image in various positions, orientations, skews or with various scaling factors. Generally one of the first steps of such a rendering system will be the application of a transformation matrix to each coordinate of input graphical object data. This step must be performed prior to any sorting step. There are additional processes known in the art that could and would have to be performed prior to any sorting step, such as stroking, morphing and scissoring (removal of edges/parts of edges that do not effect output).
A rendering system such as described above can be used to generate an animated image on an output display device or in an output frame buffer. Input can be accepted one frame at a time, and corresponding output can be generated one frame at a time. However, prior art rendering systems described are inefficient in this role, because edges are required to be passed as input on a frame-by-frame basis, and the rendering system is required to perform essentially the same processing (eg. transformation, stroking, morphing and scissoring) frame after frame. Additionally, all the input edges would require re-sorting for every frame, which can be computationally expensive.